package annotationAndReflection;

import java.lang.reflect.Field;

/**
 * @author mubei
 * @date 2021/11/25
 * @description  类加载和常用的方法
 */
public class ClassMethodTest {

    public static void main(String[] args) throws Exception{
        //Cat cat = new Cat();
        Class<?> aClass = Class.forName("annotationAndReflection.Cat");

        // 输出cls
        System.out.println(aClass);
        System.out.println(aClass.getClass());

        //输出包名
        System.out.println(aClass.getPackage().getName());

        //得到类名
        System.out.println(aClass.getName());

        //生成对象实例
        Cat cat = (Cat)aClass.newInstance();
        System.out.println(cat);

        // 反射获取属性
        Field name = aClass.getField("name");
        for (Field field : aClass.getFields()) {
            System.out.println(field.getName()+" "+field.get(cat));
        }
        // 通过反射 给属性赋值
       name.set(cat,"mubei");
        System.out.println(name.get(cat));
    }
}
